package org.aspire.core.sys;

import org.aspire.math.geom.Dimension;

/******************************************************************************
 * A collection of system-wide utility functions.
 * 
 * @author JPACarabuena
 *****************************************************************************/
public final class GSystem {

	// ========================================================================
	// Constants
	// ========================================================================

	/**************************************************************************
	 * The screen resolution of the device where the game will be executed.
	 * By default, this is initialize to the default dimension.
	 * <p>
	 * Note: This must be changed to match the actual screen size or view-port
	 * of the computing environment.
	 *************************************************************************/
	public static Dimension SCREEN_RESOLUTION = new Dimension();
	
	// ========================================================================
	// Static Methods
	// ========================================================================
	
	/**************************************************************************
	 * Checks the current time in millisecond precision.
	 * 
	 * @return	The current time in millisecond precision.
	 *************************************************************************/
	public static long getTime() {
		return System.currentTimeMillis();
	}
	
	/**************************************************************************
	 * Prints the equivalent string value of the specified object into the
	 * console. This can be used for debugging purposes.
	 * 
	 * @param object	the object to be printed.
	 *************************************************************************/
	public static void println(Object object) {
		System.out.println(object.toString());
	}
	
	/**************************************************************************
	 * Prints the specified string value into the console. This can be used for
	 * debugging purposes.
	 * 
	 * @param string	the string to be printed.
	 *************************************************************************/
	public static void println(String string) {
		System.out.println(string);
	}
	
	/**************************************************************************
	 * Prints the specified integer value into the console. This can be used
	 * for debugging purposes.
	 * 
	 * @param val	the integer to be printed.
	 *************************************************************************/
	public static void println(int val) {
		System.out.println(val);
	}
	
	/**************************************************************************
	 * Prints the specified long integer value into the console. This can be
	 * used for debugging purposes.
	 * 
	 * @param val	the long integer to be printed.
	 *************************************************************************/
	public static void println(long val) {
		System.out.println(val);
	}
	
	/**************************************************************************
	 * Prints the specified floating point value into the console. This can be
	 * used for debugging purposes.
	 * 
	 * @param val	the floating point to be printed.
	 *************************************************************************/
	public static void println(float val) {
		System.out.println(val);
	}
	
	/**************************************************************************
	 * Prints the specified double value into the console. This can be used for
	 * debugging purposes.
	 * 
	 * @param val	the double to be printed.
	 *************************************************************************/
	public static void println(double val) {
		System.out.println(val);
	}
	
	/**************************************************************************
	 * Prints the specified byte value into the console. This can be used for
	 * debugging purposes.
	 * 
	 * @param val	the byte value to be printed.
	 *************************************************************************/
	public static void println(byte val) {
		System.out.println(val);
	}
	
	/**************************************************************************
	 * Prints the specified character value into the console. This can be used
	 * for debugging purposes.
	 * 
	 * @param val	the character value to be printed.
	 *************************************************************************/
	public static void println(char val) {
		System.out.println(val);
	}
	
	/**************************************************************************
	 * Prints the specified boolean value into the console. This can be used
	 * for debugging purposes.
	 * 
	 * @param val	the boolean value to be printed.
	 *************************************************************************/
	public static void println(boolean val) {
		System.out.println(val);
	}

	// ========================================================================
	// Fields
	// ========================================================================

	// ========================================================================
	// Constructors
	// ========================================================================

	/**************************************************************************
	 * Disable unwanted construction of the <code>GSystem</code> class.
	 *************************************************************************/
	protected GSystem() {
		
	}

	// ========================================================================
	// Getters & Setters
	// ========================================================================

	// ========================================================================
	// Override Methods
	// ========================================================================

	// ========================================================================
	// Methods
	// ========================================================================

	// ========================================================================
	// Inner & Anonymous Classes
	// ========================================================================
}